home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libcruft / lapack / dlarfx.f < prev    next >
Text File  |  1996-07-19  |  18KB  |  640 lines

  1.       SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
  2. *
  3. *  -- LAPACK auxiliary routine (version 2.0) --
  4. *     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
  5. *     Courant Institute, Argonne National Lab, and Rice University
  6. *     February 29, 1992
  7. *
  8. *     .. Scalar Arguments ..
  9.       CHARACTER          SIDE
  10.       INTEGER            LDC, M, N
  11.       DOUBLE PRECISION   TAU
  12. *     ..
  13. *     .. Array Arguments ..
  14.       DOUBLE PRECISION   C( LDC, * ), V( * ), WORK( * )
  15. *     ..
  16. *
  17. *  Purpose
  18. *  =======
  19. *
  20. *  DLARFX applies a real elementary reflector H to a real m by n
  21. *  matrix C, from either the left or the right. H is represented in the
  22. *  form
  23. *
  24. *        H = I - tau * v * v'
  25. *
  26. *  where tau is a real scalar and v is a real vector.
  27. *
  28. *  If tau = 0, then H is taken to be the unit matrix
  29. *
  30. *  This version uses inline code if H has order < 11.
  31. *
  32. *  Arguments
  33. *  =========
  34. *
  35. *  SIDE    (input) CHARACTER*1
  36. *          = 'L': form  H * C
  37. *          = 'R': form  C * H
  38. *
  39. *  M       (input) INTEGER
  40. *          The number of rows of the matrix C.
  41. *
  42. *  N       (input) INTEGER
  43. *          The number of columns of the matrix C.
  44. *
  45. *  V       (input) DOUBLE PRECISION array, dimension (M) if SIDE = 'L'
  46. *                                     or (N) if SIDE = 'R'
  47. *          The vector v in the representation of H.
  48. *
  49. *  TAU     (input) DOUBLE PRECISION
  50. *          The value tau in the representation of H.
  51. *
  52. *  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
  53. *          On entry, the m by n matrix C.
  54. *          On exit, C is overwritten by the matrix H * C if SIDE = 'L',
  55. *          or C * H if SIDE = 'R'.
  56. *
  57. *  LDC     (input) INTEGER
  58. *          The leading dimension of the array C. LDA >= (1,M).
  59. *
  60. *  WORK    (workspace) DOUBLE PRECISION array, dimension
  61. *                      (N) if SIDE = 'L'
  62. *                      or (M) if SIDE = 'R'
  63. *          WORK is not referenced if H has order < 11.
  64. *
  65. *  =====================================================================
  66. *
  67. *     .. Parameters ..
  68.       DOUBLE PRECISION   ZERO, ONE
  69.       PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0 )
  70. *     ..
  71. *     .. Local Scalars ..
  72.       INTEGER            J
  73.       DOUBLE PRECISION   SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
  74.      $                   V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
  75. *     ..
  76. *     .. External Functions ..
  77.       LOGICAL            LSAME
  78.       EXTERNAL           LSAME
  79. *     ..
  80. *     .. External Subroutines ..
  81.       EXTERNAL           DGEMV, DGER
  82. *     ..
  83. *     .. Executable Statements ..
  84. *
  85.       IF( TAU.EQ.ZERO )
  86.      $   RETURN
  87.       IF( LSAME( SIDE, 'L' ) ) THEN
  88. *
  89. *        Form  H * C, where H has order m.
  90. *
  91.          GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
  92.      $           170, 190 )M
  93. *
  94. *        Code for general M
  95. *
  96. *        w := C'*v
  97. *
  98.          CALL DGEMV( 'Transpose', M, N, ONE, C, LDC, V, 1, ZERO, WORK,
  99.      $               1 )
  100. *
  101. *        C := C - tau * v * w'
  102. *
  103.          CALL DGER( M, N, -TAU, V, 1, WORK, 1, C, LDC )
  104.          GO TO 410
  105.    10    CONTINUE
  106. *
  107. *        Special code for 1 x 1 Householder
  108. *
  109.          T1 = ONE - TAU*V( 1 )*V( 1 )
  110.          DO 20 J = 1, N
  111.             C( 1, J ) = T1*C( 1, J )
  112.    20    CONTINUE
  113.          GO TO 410
  114.    30    CONTINUE
  115. *
  116. *        Special code for 2 x 2 Householder
  117. *
  118.          V1 = V( 1 )
  119.          T1 = TAU*V1
  120.          V2 = V( 2 )
  121.          T2 = TAU*V2
  122.          DO 40 J = 1, N
  123.             SUM = V1*C( 1, J ) + V2*C( 2, J )
  124.             C( 1, J ) = C( 1, J ) - SUM*T1
  125.             C( 2, J ) = C( 2, J ) - SUM*T2
  126.    40    CONTINUE
  127.          GO TO 410
  128.    50    CONTINUE
  129. *
  130. *        Special code for 3 x 3 Householder
  131. *
  132.          V1 = V( 1 )
  133.          T1 = TAU*V1
  134.          V2 = V( 2 )
  135.          T2 = TAU*V2
  136.          V3 = V( 3 )
  137.          T3 = TAU*V3
  138.          DO 60 J = 1, N
  139.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
  140.             C( 1, J ) = C( 1, J ) - SUM*T1
  141.             C( 2, J ) = C( 2, J ) - SUM*T2
  142.             C( 3, J ) = C( 3, J ) - SUM*T3
  143.    60    CONTINUE
  144.          GO TO 410
  145.    70    CONTINUE
  146. *
  147. *        Special code for 4 x 4 Householder
  148. *
  149.          V1 = V( 1 )
  150.          T1 = TAU*V1
  151.          V2 = V( 2 )
  152.          T2 = TAU*V2
  153.          V3 = V( 3 )
  154.          T3 = TAU*V3
  155.          V4 = V( 4 )
  156.          T4 = TAU*V4
  157.          DO 80 J = 1, N
  158.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  159.      $            V4*C( 4, J )
  160.             C( 1, J ) = C( 1, J ) - SUM*T1
  161.             C( 2, J ) = C( 2, J ) - SUM*T2
  162.             C( 3, J ) = C( 3, J ) - SUM*T3
  163.             C( 4, J ) = C( 4, J ) - SUM*T4
  164.    80    CONTINUE
  165.          GO TO 410
  166.    90    CONTINUE
  167. *
  168. *        Special code for 5 x 5 Householder
  169. *
  170.          V1 = V( 1 )
  171.          T1 = TAU*V1
  172.          V2 = V( 2 )
  173.          T2 = TAU*V2
  174.          V3 = V( 3 )
  175.          T3 = TAU*V3
  176.          V4 = V( 4 )
  177.          T4 = TAU*V4
  178.          V5 = V( 5 )
  179.          T5 = TAU*V5
  180.          DO 100 J = 1, N
  181.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  182.      $            V4*C( 4, J ) + V5*C( 5, J )
  183.             C( 1, J ) = C( 1, J ) - SUM*T1
  184.             C( 2, J ) = C( 2, J ) - SUM*T2
  185.             C( 3, J ) = C( 3, J ) - SUM*T3
  186.             C( 4, J ) = C( 4, J ) - SUM*T4
  187.             C( 5, J ) = C( 5, J ) - SUM*T5
  188.   100    CONTINUE
  189.          GO TO 410
  190.   110    CONTINUE
  191. *
  192. *        Special code for 6 x 6 Householder
  193. *
  194.          V1 = V( 1 )
  195.          T1 = TAU*V1
  196.          V2 = V( 2 )
  197.          T2 = TAU*V2
  198.          V3 = V( 3 )
  199.          T3 = TAU*V3
  200.          V4 = V( 4 )
  201.          T4 = TAU*V4
  202.          V5 = V( 5 )
  203.          T5 = TAU*V5
  204.          V6 = V( 6 )
  205.          T6 = TAU*V6
  206.          DO 120 J = 1, N
  207.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  208.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J )
  209.             C( 1, J ) = C( 1, J ) - SUM*T1
  210.             C( 2, J ) = C( 2, J ) - SUM*T2
  211.             C( 3, J ) = C( 3, J ) - SUM*T3
  212.             C( 4, J ) = C( 4, J ) - SUM*T4
  213.             C( 5, J ) = C( 5, J ) - SUM*T5
  214.             C( 6, J ) = C( 6, J ) - SUM*T6
  215.   120    CONTINUE
  216.          GO TO 410
  217.   130    CONTINUE
  218. *
  219. *        Special code for 7 x 7 Householder
  220. *
  221.          V1 = V( 1 )
  222.          T1 = TAU*V1
  223.          V2 = V( 2 )
  224.          T2 = TAU*V2
  225.          V3 = V( 3 )
  226.          T3 = TAU*V3
  227.          V4 = V( 4 )
  228.          T4 = TAU*V4
  229.          V5 = V( 5 )
  230.          T5 = TAU*V5
  231.          V6 = V( 6 )
  232.          T6 = TAU*V6
  233.          V7 = V( 7 )
  234.          T7 = TAU*V7
  235.          DO 140 J = 1, N
  236.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  237.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  238.      $            V7*C( 7, J )
  239.             C( 1, J ) = C( 1, J ) - SUM*T1
  240.             C( 2, J ) = C( 2, J ) - SUM*T2
  241.             C( 3, J ) = C( 3, J ) - SUM*T3
  242.             C( 4, J ) = C( 4, J ) - SUM*T4
  243.             C( 5, J ) = C( 5, J ) - SUM*T5
  244.             C( 6, J ) = C( 6, J ) - SUM*T6
  245.             C( 7, J ) = C( 7, J ) - SUM*T7
  246.   140    CONTINUE
  247.          GO TO 410
  248.   150    CONTINUE
  249. *
  250. *        Special code for 8 x 8 Householder
  251. *
  252.          V1 = V( 1 )
  253.          T1 = TAU*V1
  254.          V2 = V( 2 )
  255.          T2 = TAU*V2
  256.          V3 = V( 3 )
  257.          T3 = TAU*V3
  258.          V4 = V( 4 )
  259.          T4 = TAU*V4
  260.          V5 = V( 5 )
  261.          T5 = TAU*V5
  262.          V6 = V( 6 )
  263.          T6 = TAU*V6
  264.          V7 = V( 7 )
  265.          T7 = TAU*V7
  266.          V8 = V( 8 )
  267.          T8 = TAU*V8
  268.          DO 160 J = 1, N
  269.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  270.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  271.      $            V7*C( 7, J ) + V8*C( 8, J )
  272.             C( 1, J ) = C( 1, J ) - SUM*T1
  273.             C( 2, J ) = C( 2, J ) - SUM*T2
  274.             C( 3, J ) = C( 3, J ) - SUM*T3
  275.             C( 4, J ) = C( 4, J ) - SUM*T4
  276.             C( 5, J ) = C( 5, J ) - SUM*T5
  277.             C( 6, J ) = C( 6, J ) - SUM*T6
  278.             C( 7, J ) = C( 7, J ) - SUM*T7
  279.             C( 8, J ) = C( 8, J ) - SUM*T8
  280.   160    CONTINUE
  281.          GO TO 410
  282.   170    CONTINUE
  283. *
  284. *        Special code for 9 x 9 Householder
  285. *
  286.          V1 = V( 1 )
  287.          T1 = TAU*V1
  288.          V2 = V( 2 )
  289.          T2 = TAU*V2
  290.          V3 = V( 3 )
  291.          T3 = TAU*V3
  292.          V4 = V( 4 )
  293.          T4 = TAU*V4
  294.          V5 = V( 5 )
  295.          T5 = TAU*V5
  296.          V6 = V( 6 )
  297.          T6 = TAU*V6
  298.          V7 = V( 7 )
  299.          T7 = TAU*V7
  300.          V8 = V( 8 )
  301.          T8 = TAU*V8
  302.          V9 = V( 9 )
  303.          T9 = TAU*V9
  304.          DO 180 J = 1, N
  305.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  306.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  307.      $            V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
  308.             C( 1, J ) = C( 1, J ) - SUM*T1
  309.             C( 2, J ) = C( 2, J ) - SUM*T2
  310.             C( 3, J ) = C( 3, J ) - SUM*T3
  311.             C( 4, J ) = C( 4, J ) - SUM*T4
  312.             C( 5, J ) = C( 5, J ) - SUM*T5
  313.             C( 6, J ) = C( 6, J ) - SUM*T6
  314.             C( 7, J ) = C( 7, J ) - SUM*T7
  315.             C( 8, J ) = C( 8, J ) - SUM*T8
  316.             C( 9, J ) = C( 9, J ) - SUM*T9
  317.   180    CONTINUE
  318.          GO TO 410
  319.   190    CONTINUE
  320. *
  321. *        Special code for 10 x 10 Householder
  322. *
  323.          V1 = V( 1 )
  324.          T1 = TAU*V1
  325.          V2 = V( 2 )
  326.          T2 = TAU*V2
  327.          V3 = V( 3 )
  328.          T3 = TAU*V3
  329.          V4 = V( 4 )
  330.          T4 = TAU*V4
  331.          V5 = V( 5 )
  332.          T5 = TAU*V5
  333.          V6 = V( 6 )
  334.          T6 = TAU*V6
  335.          V7 = V( 7 )
  336.          T7 = TAU*V7
  337.          V8 = V( 8 )
  338.          T8 = TAU*V8
  339.          V9 = V( 9 )
  340.          T9 = TAU*V9
  341.          V10 = V( 10 )
  342.          T10 = TAU*V10
  343.          DO 200 J = 1, N
  344.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  345.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  346.      $            V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
  347.      $            V10*C( 10, J )
  348.             C( 1, J ) = C( 1, J ) - SUM*T1
  349.             C( 2, J ) = C( 2, J ) - SUM*T2
  350.             C( 3, J ) = C( 3, J ) - SUM*T3
  351.             C( 4, J ) = C( 4, J ) - SUM*T4
  352.             C( 5, J ) = C( 5, J ) - SUM*T5
  353.             C( 6, J ) = C( 6, J ) - SUM*T6
  354.             C( 7, J ) = C( 7, J ) - SUM*T7
  355.             C( 8, J ) = C( 8, J ) - SUM*T8
  356.             C( 9, J ) = C( 9, J ) - SUM*T9
  357.             C( 10, J ) = C( 10, J ) - SUM*T10
  358.   200    CONTINUE
  359.          GO TO 410
  360.       ELSE
  361. *
  362. *        Form  C * H, where H has order n.
  363. *
  364.          GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
  365.      $           370, 390 )N
  366. *
  367. *        Code for general N
  368. *
  369. *        w := C * v
  370. *
  371.          CALL DGEMV( 'No transpose', M, N, ONE, C, LDC, V, 1, ZERO,
  372.      $               WORK, 1 )
  373. *
  374. *        C := C - tau * w * v'
  375. *
  376.          CALL DGER( M, N, -TAU, WORK, 1, V, 1, C, LDC )
  377.          GO TO 410
  378.   210    CONTINUE
  379. *
  380. *        Special code for 1 x 1 Householder
  381. *
  382.          T1 = ONE - TAU*V( 1 )*V( 1 )
  383.          DO 220 J = 1, M
  384.             C( J, 1 ) = T1*C( J, 1 )
  385.   220    CONTINUE
  386.          GO TO 410
  387.   230    CONTINUE
  388. *
  389. *        Special code for 2 x 2 Householder
  390. *
  391.          V1 = V( 1 )
  392.          T1 = TAU*V1
  393.          V2 = V( 2 )
  394.          T2 = TAU*V2
  395.          DO 240 J = 1, M
  396.             SUM = V1*C( J, 1 ) + V2*C( J, 2 )
  397.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  398.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  399.   240    CONTINUE
  400.          GO TO 410
  401.   250    CONTINUE
  402. *
  403. *        Special code for 3 x 3 Householder
  404. *
  405.          V1 = V( 1 )
  406.          T1 = TAU*V1
  407.          V2 = V( 2 )
  408.          T2 = TAU*V2
  409.          V3 = V( 3 )
  410.          T3 = TAU*V3
  411.          DO 260 J = 1, M
  412.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
  413.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  414.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  415.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  416.   260    CONTINUE
  417.          GO TO 410
  418.   270    CONTINUE
  419. *
  420. *        Special code for 4 x 4 Householder
  421. *
  422.          V1 = V( 1 )
  423.          T1 = TAU*V1
  424.          V2 = V( 2 )
  425.          T2 = TAU*V2
  426.          V3 = V( 3 )
  427.          T3 = TAU*V3
  428.          V4 = V( 4 )
  429.          T4 = TAU*V4
  430.          DO 280 J = 1, M
  431.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  432.      $            V4*C( J, 4 )
  433.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  434.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  435.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  436.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  437.   280    CONTINUE
  438.          GO TO 410
  439.   290    CONTINUE
  440. *
  441. *        Special code for 5 x 5 Householder
  442. *
  443.          V1 = V( 1 )
  444.          T1 = TAU*V1
  445.          V2 = V( 2 )
  446.          T2 = TAU*V2
  447.          V3 = V( 3 )
  448.          T3 = TAU*V3
  449.          V4 = V( 4 )
  450.          T4 = TAU*V4
  451.          V5 = V( 5 )
  452.          T5 = TAU*V5
  453.          DO 300 J = 1, M
  454.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  455.      $            V4*C( J, 4 ) + V5*C( J, 5 )
  456.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  457.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  458.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  459.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  460.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  461.   300    CONTINUE
  462.          GO TO 410
  463.   310    CONTINUE
  464. *
  465. *        Special code for 6 x 6 Householder
  466. *
  467.          V1 = V( 1 )
  468.          T1 = TAU*V1
  469.          V2 = V( 2 )
  470.          T2 = TAU*V2
  471.          V3 = V( 3 )
  472.          T3 = TAU*V3
  473.          V4 = V( 4 )
  474.          T4 = TAU*V4
  475.          V5 = V( 5 )
  476.          T5 = TAU*V5
  477.          V6 = V( 6 )
  478.          T6 = TAU*V6
  479.          DO 320 J = 1, M
  480.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  481.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
  482.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  483.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  484.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  485.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  486.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  487.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  488.   320    CONTINUE
  489.          GO TO 410
  490.   330    CONTINUE
  491. *
  492. *        Special code for 7 x 7 Householder
  493. *
  494.          V1 = V( 1 )
  495.          T1 = TAU*V1
  496.          V2 = V( 2 )
  497.          T2 = TAU*V2
  498.          V3 = V( 3 )
  499.          T3 = TAU*V3
  500.          V4 = V( 4 )
  501.          T4 = TAU*V4
  502.          V5 = V( 5 )
  503.          T5 = TAU*V5
  504.          V6 = V( 6 )
  505.          T6 = TAU*V6
  506.          V7 = V( 7 )
  507.          T7 = TAU*V7
  508.          DO 340 J = 1, M
  509.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  510.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  511.      $            V7*C( J, 7 )
  512.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  513.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  514.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  515.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  516.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  517.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  518.             C( J, 7 ) = C( J, 7 ) - SUM*T7
  519.   340    CONTINUE
  520.          GO TO 410
  521.   350    CONTINUE
  522. *
  523. *        Special code for 8 x 8 Householder
  524. *
  525.          V1 = V( 1 )
  526.          T1 = TAU*V1
  527.          V2 = V( 2 )
  528.          T2 = TAU*V2
  529.          V3 = V( 3 )
  530.          T3 = TAU*V3
  531.          V4 = V( 4 )
  532.          T4 = TAU*V4
  533.          V5 = V( 5 )
  534.          T5 = TAU*V5
  535.          V6 = V( 6 )
  536.          T6 = TAU*V6
  537.          V7 = V( 7 )
  538.          T7 = TAU*V7
  539.          V8 = V( 8 )
  540.          T8 = TAU*V8
  541.          DO 360 J = 1, M
  542.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  543.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  544.      $            V7*C( J, 7 ) + V8*C( J, 8 )
  545.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  546.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  547.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  548.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  549.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  550.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  551.             C( J, 7 ) = C( J, 7 ) - SUM*T7
  552.             C( J, 8 ) = C( J, 8 ) - SUM*T8
  553.   360    CONTINUE
  554.          GO TO 410
  555.   370    CONTINUE
  556. *
  557. *        Special code for 9 x 9 Householder
  558. *
  559.          V1 = V( 1 )
  560.          T1 = TAU*V1
  561.          V2 = V( 2 )
  562.          T2 = TAU*V2
  563.          V3 = V( 3 )
  564.          T3 = TAU*V3
  565.          V4 = V( 4 )
  566.          T4 = TAU*V4
  567.          V5 = V( 5 )
  568.          T5 = TAU*V5
  569.          V6 = V( 6 )
  570.          T6 = TAU*V6
  571.          V7 = V( 7 )
  572.          T7 = TAU*V7
  573.          V8 = V( 8 )
  574.          T8 = TAU*V8
  575.          V9 = V( 9 )
  576.          T9 = TAU*V9
  577.          DO 380 J = 1, M
  578.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  579.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  580.      $            V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
  581.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  582.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  583.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  584.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  585.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  586.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  587.             C( J, 7 ) = C( J, 7 ) - SUM*T7
  588.             C( J, 8 ) = C( J, 8 ) - SUM*T8
  589.             C( J, 9 ) = C( J, 9 ) - SUM*T9
  590.   380    CONTINUE
  591.          GO TO 410
  592.   390    CONTINUE
  593. *
  594. *        Special code for 10 x 10 Householder
  595. *
  596.          V1 = V( 1 )
  597.          T1 = TAU*V1
  598.          V2 = V( 2 )
  599.          T2 = TAU*V2
  600.          V3 = V( 3 )
  601.          T3 = TAU*V3
  602.          V4 = V( 4 )
  603.          T4 = TAU*V4
  604.          V5 = V( 5 )
  605.          T5 = TAU*V5
  606.          V6 = V( 6 )
  607.          T6 = TAU*V6
  608.          V7 = V( 7 )
  609.          T7 = TAU*V7
  610.          V8 = V( 8 )
  611.          T8 = TAU*V8
  612.          V9 = V( 9 )
  613.          T9 = TAU*V9
  614.          V10 = V( 10 )
  615.          T10 = TAU*V10
  616.          DO 400 J = 1, M
  617.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  618.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  619.      $            V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
  620.      $            V10*C( J, 10 )
  621.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  622.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  623.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  624.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  625.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  626.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  627.             C( J, 7 ) = C( J, 7 ) - SUM*T7
  628.             C( J, 8 ) = C( J, 8 ) - SUM*T8
  629.             C( J, 9 ) = C( J, 9 ) - SUM*T9
  630.             C( J, 10 ) = C( J, 10 ) - SUM*T10
  631.   400    CONTINUE
  632.          GO TO 410
  633.       END IF
  634.   410 CONTINUE
  635.       RETURN
  636. *
  637. *     End of DLARFX
  638. *
  639.       END
  640.